1
소스 포터빌리티를 넘어서
AI024Lesson 3
00:00

ROCm 생태계에서, 소스 포터빌리티 성능 일치로 오해되기 쉽습니다. 비록 포터블한 HIP 코드 단일 코드베이스가 다양한 하드웨어 제조사(AMD 및 NVIDIA) 간에 실행되도록 허용하지만, 최고 성능을 달성하려면 소스 포터빌리티와 바이너리 성능은 별개의 문제이다.

1. 포터빌리티 역설

하나의 HIP 프로그램은 소스 수준에서 포터블하다즉, 문법과 논리는 일정하게 유지됨을 의미합니다. 그러나 기반되는 명령어 집합 아키텍처(ISA)는 세대 간에 크게 다릅니다(예: AMD GCN 대비 RDNA). 이러한 차이를 무시하는 '초보적' 빌드는 심각한 성능 저하를 초래할 수 있습니다.

2. 아키텍처 민감성

최대 성능을 추출하기 위해, 좋은 바이너리는 여전히 아키텍처에 민감해야 합니다컴파일러는 타겟 GPU의 컴퓨트 유닛에 맞춰 레지스터 할당, 웨이브프론트/워프 스케줄링, 메모리 접근 패턴을 특별히 최적화해야 합니다. 타겟 아키텍처를 지정하지 않으면, 매트릭스 결합 곱셈(매트릭스 폴드곱셈, MFMA)과 같은 전용 하드웨어를 사용할 수 없습니다.

통합된 HIP 소스AMD 최적화 (amdgcn)NVIDIA 최적화 (nvptx)최적화 격차

기능적 호환성은 바이너리 수준의 성능 일치를 의미하지 않습니다.

3. 빌드 시스템의 의무

"안녕하세요 세계"를 넘어서는 확장에는 단일 소스 트리에서 여러 최적화된 바이너리 경로를 생성하고 관리하는 고도화된 빌드 파이프라인(예: CMake)이 필요합니다. 이를 통해 올바른 명령어가 올바른 하드웨어에 도달하도록 보장합니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>